package tests;
import modelo.*;
import junit.framework.TestCase;
import utilitarios.PuntoXY;

public class PruebasEscenario extends TestCase {
	
	public void testNoSePuedeAgregarObjetoFueraDelEscenario() {
		
		// ARRANGE
		Escenario escenario = new Escenario(300, 300);
		TanqueAlgo tanque = new TanqueAlgo(escenario, new PuntoXY(0.5, 0.5));
		
		// ACT
		escenario.agregarObjeto(tanque);
		
		// ASSERT
		assertEquals(0, escenario.cantidadObjetos());
	}
	
		
	public void testNoSePuedeAgregarObjetoEnLaMismaPosicionQueOtro() {
		Escenario escenario = new Escenario(300, 300);
		TanqueAlgo tanque1 = new TanqueAlgo(escenario, new PuntoXY(15, 15));
		TanqueAlgo tanque2 = new TanqueAlgo(escenario, new PuntoXY(16, 15));
		
		// ACT y ASSERT
		escenario.agregarObjeto(tanque1);
		escenario.agregarObjeto(tanque2);

		// ASSERT
		assertEquals(1, escenario.cantidadObjetos());
		
	}
	
	public void testAgregarObjetoAumentaEnUnoLaCantidadDeObjetosDelEscenario() {
		
		// ARRANGE
		Escenario escenario = new Escenario(300, 300);
		TanqueAlgo tanque = new TanqueAlgo(escenario, new PuntoXY(15, 15));
		
		// ACT
		escenario.agregarObjeto(tanque);
		
		// ASSSERT
		assertEquals(1, escenario.cantidadObjetos());
	}
	
	public void testNoDeberiaEliminarObjetoInexistente() {
		
		// ARRANGE
		Escenario escenario = new Escenario(300, 300);
		TanqueAlgo unTanque = new TanqueAlgo(escenario, new PuntoXY(15, 15));
		
		// ACT y ASSERT
		assertEquals(false, escenario.eliminarObjeto(unTanque));
	}
	
	public void testDeberiaEliminarObjetoExistente() {
		
		// ARRANGE
		Escenario escenario = new Escenario(300, 300);
		TanqueAlgo tanque = new TanqueAlgo(escenario, new PuntoXY(15, 15));
		escenario.agregarObjeto(tanque);
		
		// ACT y ASSERT
		assertEquals(true, escenario.eliminarObjeto(tanque));

	}

}
